﻿SeadragonJSDrawer = function(source, viewport, elmt) {
    /// <summary>Creates a button with the given tooltip, state images and event handlers.</summary>
    /// <param name="tooltip"></param>
    /// <param name="srcRest">Image of the button</param>
    /// <param name="srcGroup"></param>
    /// <field name="elmt" type="string">HTML Element. The HTML element inside which the content is rendered. This is the same HTML element that is passed into the constructor. The specifics of this element and its children are unspecified and implementation-dependent.</field>
    /// <field name="profiler" type="SeadragonJSProfiler">A Seadragon.Profiler instance that is profiling each update.</field>
    /// <returns type="Object"></returns>
}

SeadragonJSDrawer.prototype =
{
    elmt: null,
    profiler: null,

    addOverlay: function(elmt, rect) {
        /// <summary>Adds the given HTML element as an overlay to the content if it has not been added before. This overlay will scale with the content; the element's size will always match the given Seadragon.Rect, which must be in normalized coordinates (see Seadragon.Viewport for details).</summary>
        /// <param name="elmt"></param>
        /// <param name="rect"></param>
    },

    addOverlay: function(elmt, point, placement) {
        /// <summary>Adds the given HTML element as an overlay to the content if it has not been added before. This overlay will not scale with the content; its size will remain untouched. The overlay will be placed at the given Seadragon.Point, which must be a normalized coordinate (see Seadragon.Viewport for details).</summary>
        /// <param name="elmt"></param>
        /// <param name="point"></param>
        /// <param name="placement"> An optional Seadragon.OverlayPlacement value can be given that describes which part of the element is specifically placed at the given point. If none is given, the element is placed by its center.</param>
    },

    updateOverlay: function(elmt, rect) {
        /// <summary>Updates the given HTML element overlay to the given Seadragon.Rect. The overlay will scale with the content.</summary>
        /// <param name="elmt"></param>
        /// <param name="rect"></param>
    },

    updateOverlay: function(elmt, point, placement) {
        /// <summary>Updates the given HTML element overlay to the given Seadragon.Point. and optionally the given Seadragon.OverlayPlacement. If no placement is given, the element is placed by its center. The overlay will not scale with the content.</summary>
        /// <param name="elmt"></param>
        /// <param name="point"></param>
        /// <param name="placement"></param>
    },

    removeOverlay: function(elmt) {
        /// <summary>Removes the given HTML element overlay.</summary>
        /// <param name="elmt"></param>
    },

    clearOverlays: function() {
        /// <summary>Removes all HTML element overlays.</summary>
    },

    needsUpdate: function() {
        /// <summary>Returns true if the drawer needs an update since the last update.</summary>
        /// <returns type="Boolean"></returns>
    },

    reset: function() {
        /// <summary>Resets this drawer so that the content is re-drawn from scratch. Overlays are maintained, however.</summary>
    },

    update: function() {
        /// <summary>Updates the drawn content based on the viewport's current values.</summary>
    }

}
